iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
0
  • Global Secondary Index
    如果為一張table新增一個index,最終會發現,其實Scylla把新增index當成是新增一個Materialized View。這裡的index指的是Global Secondary Index。一樣用painting這個table來解釋。
    原本的表格
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220pntt9yukQe.png
    新增index - painting_name
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220McLh6AJ4YA.png
    然後再desc一次painting,這時候發現多出了一個view,
    https://ithelp.ithome.com.tw/upload/images/20200909/201132209NLjEprHR5.png
    然後就可以用name當作條件來查詢painting了
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220xWxVIChCAc.png
    但是實際上的查詢流程是這樣的,首先Scylla發現有一個index滿足使用name當成條件的查詢,所以先到這個view把對應的id撈出來。
    接著再回到原本的table裡,把得到的id當成條件查詢出所要的資訊。
    https://ithelp.ithome.com.tw/upload/images/20200909/20113220iZVCgEudcF.png

  • Local Secondary Index
    還有一種Secondary Index,稱為Local Secondary Index。與Global Secondary Index不同的是,它的Partition Key與原本的Table相同,差別只有在後面的Clustering Key。
    如此一來Local Secondary Index所建立的view和原本的Table,資料分布會在同一個node。所以兩次查詢都可以在同一個node完成,而不需再透過其他的node得到資料,大大減低了所需的時間。

上一篇
Day17 DataModel - Materialized Views
下一篇
Day19 Admin Tools - nodetool(一)
系列文
ScyllaDB實作紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言